//<string> ==> 具体的某种类型：字符串类型
//Array    ==> 是一个interface
//Array    ==> interface Array<T> {}
//其实string 就是 上面Array<T> ==> 其实就是T
var arr1 = [1, 2, 3];
var arr2 = ['a', 'b', 'c'];
//函数泛型
function fun1(arg) {
    return arg;
}
fun1('你好');
fun1(123);
//可以定义多个泛型
function fun2(a, b) {
}
fun2(1, '2');
//来看一个需求，说这个泛型，需要有length属性
function fun3(arg) {
    return arg.length;
}
fun3('你好');
fun3(['a', 'b']);
fun3([1, 2, 3]);
function fun4(arg) {
    return arg.length;
}
fun4('你好');
fun4(['a', 'b']);
fun4([1, 2, 3]);
var data = {
    a: 1,
    b: 2,
    c: 'aaaa'
};
//class类的泛型
var Person = /** @class */ (function () {
    function Person(name, age) {
        this.userName = name;
        this.userage = age;
    }
    return Person;
}());
var p1 = new Person('你好', 28);
